

# 项目目录
DIR := .
# 顶层的源文件路径、头文件路径、动态库文件路径
SUBS_DIR := $(DIR)/src/log $(DIR)/src/template
TAG0_FILE := $(DIR)/src/template/test0/test0.c
TAG1_FILE := $(DIR)/src/template/test1/test1.c
INCS_DIR := $(DIR)/inc/dbg $(DIR)/inc/log

# 设置宏定义
CFLAGS+=-D DBG_TEST
CFLAGS+=-D LOG_TEST
CFLAGS += $(addprefix -I,$(INCS_DIR)) -fPIC
SRC_FILES = $(foreach dir,$(SUBS_DIR), $(wildcard $(dir)/*.c))
OBJ_FILES := $(SRC_FILES:.c=.o)
RM := rm -rf


.PHONY : all run0 run1 kill clean rebuild
all: test0 test1

rebuild: clean all

#多进程运行，可能有交错，但不会覆盖
run:all
	./test0 & ./test1

run0:all
	./test0

run1:all
	./test1

kill:
	${shell ps -ef | grep test | grep -v grep}
	${shell killall -9 *test*}
	${shell ps -ef | grep test | grep -v grep}

clean :
	$(RM) $(shell find $(DIR) -name "*.o") 2>&1 >/dev/null
	$(RM) test0 test1

# %包含路径和名称
%.o: %.c
	gcc -c -o $@ $(CFLAGS) $<

test0 : $(TAG0_FILE) $(OBJ_FILES)
	gcc -o $@ $(CFLAGS) $^

test1 : $(TAG1_FILE) $(OBJ_FILES)
	gcc -o $@ $(CFLAGS) $^
